<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<title>
			iHere: 时刻关注企业软件开发领域的变化与创新
		</title>
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="copyright" content="&copy; 2006 C4Media" />
<meta name="author" content="alex[at]c4media[dot]com" />
    <link rel="stylesheet" type="text/css" media="screen" href="./style.css" />
    <link rel="stylesheet" type="text/css" media="print" href="./print.css" />
    <!--[if IE]>
    <link rel="stylesheet" type="text/css" media="screen" href="./style-ie.css" />
    <![endif]-->
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    
    <script src="/scripts/JSResource_zh.js" type="text/javascript"></script>

	<script src="/scripts/commons.js" type="text/javascript"></script>
	<script src="/scripts/ContentSummary.js" type="text/javascript"></script>
	<script src="/scripts/CategoryManagement.js" type="text/javascript"></script>
	<script src="/dwr/engine.js" type="text/javascript"></script>
	<script src="/dwr/util.js" type="text/javascript"></script>
	<script src="/dwr/interface/UserCategoryUtil.js" type="text/javascript"></script>
	<script src="/dwr/interface/DWRRewriteAction.js" type="text/javascript"></script>
		<meta name="keywords" content="Java, .NET, dotnet, Ruby, SOA, Agile, 面向服务架构, 敏捷, 企业, 软件开发, 开发, 架构, 编程"/>
		<meta name="description" content="iHere.com (Information Queue) is an independent online community focused on change and innovation in enterprise software development, targeted primarily at the technical architect, technical team lead (senior developer), and project manager. iHere serves the Java, .NET, Ruby, SOA, and Agile communities with daily news written by domain experts, articles, video interviews, video conference presentations, and mini-books.  iHere offers personalization features allowing you to customize the site and your RSS feed to the specific subset of content you are interested in."/>
</head>
<body > 
<script src="/scripts/prototype.js" type="text/javascript"></script>
<script src="/scripts/login.js" type="text/javascript"></script>
<script type="text/javascript">
var loginLanguage='zh';
var loginURL='/login.action';
var registerURL='/cn/reginit.action';
var reactivateURL='/reactivate.action';
var reserpasswordURL='/resetpassword.action';
var loggedIn=false;
var logoutURL='/logout.action';
var editUserURL='/cn/edituser.action';
var aboutURL='/cn/about.jsp';
var homeURL='/';
</script>
<div id="tooltip" style="display:none;"></div>
<div id="loginWindow" style="display:none;"></div>
<div id="tagPopup" style="display:none;"></div>
<div id="container">
	<h1 class="logo"><a href="#">iHere</a></h1>
<div id="header">
	<p class="skip"><a href="#content">直接转至内容</a></p>
	<div id="quote"><p>时刻关注企业软件开发领域的变化与创新</p></div>
	<div style="float: left;width: 29%;position: relative;margin: 0 0 2px 0;padding: 0;">
		<p style="margin:0;padding: 6px 37px 0 0;margin: 0;float: right;">		
<a href="/">En</a> | 中文 | <a href="/jp/">日本語</a>
		</p>
		<p style="margin: 0;padding: 6px 9px;text-align:left;">
            <a href="" style="text-decoration: none; color: black;">中文站1.4版</a>
		</p>
	</div>
</div>
	<div id="sidebar">
	<div id="sidebar-wrapper">
<div class="s-logo">
	<p class="r-logo"><a href="/cn/">iHere</a></p>
</div>
<span style="font-size: small;#font-size: x-small;">
 七月 323,715名独立访问用户
</span>
	<div class="box-simple">
		<div class="box-simple-top"></div>
		<div id="mainLoginArea" class="box-simple-content">
			<ul>
	            <li><a href="/cn/reginit.action">注册</a></li>
			    <li><a href="javascript:void(0)" onClick="javascript:showLoginWindow(this,ALIGN_LEFT,new Function('void(0);'));">登录</a></li>
	            <li><a href="/cn/about.jsp">关于我们</a></li>
<li><a href="/cn/partners.jsp">合作伙伴</a></li>
	   	            <li><a href="/cn/rss/rss.action?token=aI30bszDn2sw0qm6PU6v4n1PXVpNlMxJ">个性化RSS<img src="./i/btn-rss-blue.gif" alt="RSS Feed" /></a></li>
			    <li><a href="/cn/">首页</a></li>
			</ul>
		</div>
		<div class="box-simple-bottom"></div>
	</div>
<div id="mainCommunitiesArea" class="box">
    <h2>您的社区</h2>
    <div class="top-corners"><div></div></div>
    <div class="box-content">
    <div class="box-content-2">
<script language="JavaScript">
var communityChangeMessage = '您的新设定将在下次页面刷新时启用。';
</script>	
<div id="communities">
    <ul>
		<li><input type="checkbox" name="java" value="true" checked="checked" id="community739" onclick="includeExcludeCommunity(this);"/>
 <a href='/cn/java/'>Java</a></li>
	
		<li><input type="checkbox" name="dotnet" value="true" checked="checked" id="community740" onclick="includeExcludeCommunity(this);"/>

 <a href='/cn/dotnet/'>.NET</a></li>
	
		<li><input type="checkbox" name="ruby" value="true" checked="checked" id="community741" onclick="includeExcludeCommunity(this);"/>
 <a href='/cn/ruby/'>Ruby</a></li>
	
		<li><input type="checkbox" name="soa" value="true" checked="checked" id="community742" onclick="includeExcludeCommunity(this);"/>
 <a href='/cn/soa/'>SOA</a></li>
	
		<li><input type="checkbox" name="agile" value="true" checked="checked" id="community743" onclick="includeExcludeCommunity(this);"/>
 <a href='/cn/agile/'>Agile</a></li>

		<li><input type="checkbox" name="architecture" value="true" checked="checked" id="community1390" onclick="includeExcludeCommunity(this);"/>
 <a href='/cn/architecture/'>Architecture</a></li>
	
    </ul>
</div>
<div id="communitiesMessage"></div>
    </div></div>
    <div class="bottom-corners"><div></div></div>
</div>

<script type="text/javascript">
	function doSearch(){
		var searchString = document.getElementById("searchId").value;
		document.getElementById("searchTerm").value =  searchString + " site:www.iHere.com";		
		document.getElementById("submitForm").submit();
	}
	
	function clearSearchText(){	
		var searchtext =  document.getElementById("searchId").value
		if(searchtext==JSResource.search){
			document.getElementById("searchId").value="";
		}
	}
</script>
<form action="http://www.google.com/search" method="GET" id="submitForm" target="_blank">
	<input type="hidden" name="q" id="searchTerm" />
</form>

	<div style="background: url('i/bg-search.gif') no-repeat 0 4px;">	
			<input type="text" name="search" id="searchId" value="Search" style="width: 85%; border: 0px none; background-color: transparent; height: 19px; padding-left:9px; padding-right:9px; padding-top:0; padding-bottom:0" onclick="clearSearchText();" onkeypress="if ((event.which && event.which == 13)||(event.keyCode && event.keyCode == 13)){doSearch();}" onblur="if(this.value=='') this.value=JSResource.search"/>	
			<a href="#" onclick="doSearch();return false;"><img src="i/btn-search.gif" alt="Search" /></a> 
	</div>

<div class="box-simple">
<div class="box-simple-top"></div>

<div id="featuredTopics" class="box-simple-content">
	
		<h2>&#29305;&#21035;&#19987;&#39064;</h2>
		<div>
			<ul>
				<li><a href="/cn/j+n/">Java + .Net&#38598;&#25104;</a></li>
			</ul>
		</div>

</div>
<div class="box-simple-bottom"></div>

</div>

<div class="box-simple">
	<div class="box-simple-top"></div>
	<div class="box-simple-content">
		<p class="banner" id="bannerparagraph">
		</p>
	</div>
	<div class="box-simple-bottom"></div>
</div>
<div class="box-simple">
	<div class="box-simple-top"></div>
	<div class="box-simple-content">
		<p class="banner">
			<img src="./i/sponsors/logos.jpg" usemap="#sponsorsmap" alt="" />
		    <map name="sponsorsmap">
		     	<area href="http://www.oracle.com/technology/global/cn/ada/welcome.htm" target="_blank" alt="Oracle" title="Oracle" shape="rect" coords="0,60,120,120" />
		     	<area href="http://msdn2.microsoft.com/zh-cn/default.aspx" target="_blank" alt="Microsoft" title="Microsoft" shape="rect" coords="0,120,120,190" />
		    </map>

		</p>
	</div>
    <div class="box-simple-bottom"></div>
</div>
				
		<div class="sidebar-bottom"></div>
	</div>
	</div>
	<div id="clearer"></div>
	<div id="content">
	<div id="content-wrapper">
		
		<div class="box">
			
	<div class="contribute">
		<ul>
			<li class="c-news"><a href="mailto:news-cn@iHere.com?Subject=[NEWS]&Body=Thanks for your interest in submitting news to iHere.com. Please provide as much detail about your news suggestion in this email as possible.  Your suggestion will be considered and if selected an iHere editor will write an editted version and publish it. An automated version of this form will be coming sometime in the next few weeks. :) Thanks - iHere team.">提供新闻</a></li>
	    </ul>
	</div>

	<h2>源于社区的最新专业技术报道</h2>
	<div class="top-corners"><div></div></div>
	
	<div class="box-content">
	<div class="box-content-2">
	<div class="box-content-3">	
	
		<div class="entry"> 
			
	        <h1><a href="/cn/news/2008/08/csdn-radar-language">CSDN中国IT技术指数(语言)：Java第一，C#第六</a></h1>
	        <dl class="tags">
	            <dt class="community">社区</dt>
				
					<dd><a href="/cn/architecture" name="architecture" id="1,390" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture</a>,</dd>
				
					<dd><a href="/cn/agile" name="agile" id="743" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile</a>,</dd>
				
					<dd><a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>,</dd>
				
					<dd><a href="/cn/ruby" name="ruby" id="741" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby</a>,</dd>
				
					<dd><a href="/cn/dotnet" name="dotnet" id="740" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">.NET</a>,</dd>

				
					<dd><a href="/cn/soa" name="soa" id="742" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">SOA</a></dd>
				
	            <dt class="topics">主题</dt>
				
					<dd><a href="/cn/Programming" name="Programming" id="831" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">编程</a>,</dd>
				
					<dd><a href="/cn/dynamic_languages" name="dynamic_languages" id="832" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">动态语言</a>,</dd>
				
					<dd><a href="/cn/rubyonrails" name="rubyonrails" id="755" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby on Rails</a></dd>

	        </dl>
	        <p>日前，CSDN网站对外正式发布中国IT技术指数报告第一期，共包括计算机语言、Web相关技术和基础软件设施等三部分。在计算机语言部分，数据显示在2008年6月份中国地区，Java、C/C++和PHP分列前三名，而被微软寄予厚望的C#语言则位列第六位。</p>
	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>霍泰稳</strong>
	
					发布于
					8月5日
				</li>
					<li class="comments">

						<a href="/cn/news/2008/08/csdn-radar-language"><span>&nbsp;</span>
							
								参与讨论
							
						</a>
					</li>
	        </ul>
		</div>
	
<div class="adsTower link-col" id="textlinksparagraph">


</div>	
	
		<div class="entry">
			
	        <h1><a href="/cn/news/2008/08/soltice-fuses-flex-osgi">Soltice: 融合Flex和OSGi的优势</a></h1>

	        <dl class="tags">
	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a></dd>
				
				<dt class="topics">主题</dt>
	            
					<dd><a href="/cn/ria" name="ria" id="777" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">RIA</a></dd>
								
	        </dl>	        
	        <p>近几个月来，开放服务网关协议（OSGi）在应用服务器技术领域获得越来越多的关注。虽然OSGi可以让应用服务器产品变得更加模块化和灵活，但是它对富互联网应用（RIA）的适应才刚刚起步。Solstice是第一个把Flex和OSGi集成在一个单独的非常方便使用的包中的框架。</p>

	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>Moxie Zhang</strong>
	
					<span>&nbsp;</span>译者
					<strong>崔康</strong>
						
					发布于
					8月5日					
				</li>
	            
					<li class="comments">

						<a href="/cn/news/2008/08/soltice-fuses-flex-osgi"><span>&nbsp;</span>
							
								参与讨论
							
						</a>
					</li>
				
	        </ul>
		</div>	
	
		<div class="entry">
			
	        <h1><a href="/cn/news/2008/08/ruby-open-classes-monkeypatching">文章：Ruby的开放类──或者：怎样避免动态打补丁</a></h1>
	        <dl class="tags">

	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/ruby" name="ruby" id="741" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby</a></dd>
				
				<dt class="topics">主题</dt>
	            
					<dd><a href="/cn/LanguageDesign" name="LanguageDesign" id="4,079" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">语言设计</a>,</dd>
				
					<dd><a href="/cn/Programming" name="Programming" id="831" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">编程</a>,</dd>

				
					<dd><a href="/cn/Technology" name="Technology" id="3,592" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">技术</a></dd>
								
	        </dl>	        
	        <p>Ruby的开放类（Open Classes）功能强大，但很容易被误用。这篇文章关注于怎样减少使用开放类的风险，介绍了一些其他可替代的类似方法，并分析了其他语言如何实现类似的功能。<a href="http://www.iHere.com/cn/articles/ruby-open-classes-monkeypatching" target="_blank">直接点击阅读完整文章</a>。</p>
	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>Werner Schuster</strong>

	
					<span>&nbsp;</span>译者
					<strong>颜勋</strong>
						
					发布于
					8月5日					
				</li>
	            
					<li class="comments">
						<a href="/cn/news/2008/08/ruby-open-classes-monkeypatching"><span>&nbsp;</span>
							
								参与讨论
							
						</a>
					</li>
				
	        </ul>

		</div>	
	
		<div class="entry">
			
				
			
	        <h1><a href="/cn/news/2008/08/FXStruts">FXStruts：开发Flex类型的Struts应用</a></h1>
	        <dl class="tags">
	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a></dd>
				
				<dt class="topics">主题</dt>

	            
					<dd><a href="/cn/ria" name="ria" id="777" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">RIA</a></dd>
								
	        </dl>	        
	        <p>Struts是基于Java Servlet、JavaBean、ResourceBundles以及XML等标准Java技术的Java开发框架。多年以来，Java开发员往往都运用Struts作为稳定的服务器端开发框架来使用。最近，一个Adobe系统的技术"先驱"—— Anirudh Sasikumar把Flex作为前端（front end）集成在struts中，从而诞生了一个新型的解决方案。Sasikumar称之为FxStruts。</p>
	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>Moxie Zhang</strong>
	
					<span>&nbsp;</span>译者
					<strong>沙晓兰</strong>

						
					发布于
					8月5日					
				</li>
	            
					<li class="comments">
						<a href="/cn/news/2008/08/FXStruts"><span>&nbsp;</span>
							
								参与讨论
							
						</a>
					</li>
				
	        </ul>
		</div>	
	
		<div class="entry">

			
				
			
	        <h1><a href="/cn/news/2008/08/jt-framework-2.6">Java模式框架Jt 2.6：改进的JtWizard、增强的Jt组件</a></h1>
	        <dl class="tags">
	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/architecture" name="architecture" id="1,390" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture</a>,</dd>
				
					<dd><a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a></dd>
				
				<dt class="topics">主题</dt>

	            				
	        </dl>	        
	        <p>自由软件最近发布了Jt 2.6（Java模式框架），这个面向模式的开源框架在最新版本中改进了JtWizard，增强了Jt组件（Jt Components）。JtWizard可用于生成基于设计模式的Java应用，这些设计模式包括四人帮（GoF）、数据访问对象（DAO）、模型-视图-控制器（MVC）和J2EE设计模式。</p>
	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>Srini Penchikala</strong>
	
					<span>&nbsp;</span>译者
					<strong>张凯峰</strong>
						
					发布于
					8月5日					
				</li>

	            
					<li class="comments">
						<a href="/cn/news/2008/08/jt-framework-2.6"><span>&nbsp;</span>
							
								参与讨论
							
						</a>
					</li>
				
	        </ul>
		</div>	
	
		<div class="entry">
			
				
			
	        <h1><a href="/cn/news/2008/08/envers_1_0_0_ga_zh">版本化JPA实体</a></h1>

	        <dl class="tags">
	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a></dd>
				
				<dt class="topics">主题</dt>
	            
					<dd><a href="/cn/dataaccess" name="dataaccess" id="807" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">数据访问</a>,</dd>
				
					<dd><a href="/cn/Versioning" name="Versioning" id="4,263" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">版本化</a></dd>

								
	        </dl>	        
	        <p>维护数据库记录的历史视图一直是一个大问题，现在这个问题终于得到了解决。这解决的过程实在不轻松，将实体的属性、关系恢复到之前的旧版本根本不是什么容易的事。最近，旨在简化JPA实体的版本管理的Envers 1.0.0 GA终于发布了。</p>
	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>Craig Wickesser</strong>
	
					<span>&nbsp;</span>译者
					<strong>张龙</strong>
						
					发布于
					8月4日					
				</li>

	            
					<li class="comments">
						<a href="/cn/news/2008/08/envers_1_0_0_ga_zh"><span>&nbsp;</span>
							
								参与讨论
							
						</a>
					</li>
				
	        </ul>
		</div>	
	
		<div class="entry">
			
				
			
	        <h1><a href="/cn/news/2008/08/rest-anti-patterns">文章：REST反模式</a></h1>

	        <dl class="tags">
	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/soa" name="soa" id="742" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">SOA</a></dd>
				
				<dt class="topics">主题</dt>
	            
					<dd><a href="/cn/rest" name="rest" id="891" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">REST</a></dd>
								
	        </dl>	        
	        <p>在本文中，Stefan Tilkov讲解了一些经常出现在自称“符合REST式设计”的应用中的反模式，并给出了避免这些反模式的对策。<a href="http://www.iHere.com/cn/articles/rest-anti-patterns" target="_blank">直接点击阅读完整文章</a>。</p>

	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>Mark Little</strong>
	
					<span>&nbsp;</span>译者
					<strong>徐涵</strong>
						
					发布于
					8月4日					
				</li>
	            
					<li class="comments">

						<a href="/cn/news/2008/08/rest-anti-patterns"><span>&nbsp;</span>
							
								参与讨论
							
						</a>
					</li>
				
	        </ul>
		</div>	
	
		<div class="entry">
			
				
			
	        <h1><a href="/cn/news/2008/08/hadoop-intro">文章：分布式计算开源框架Hadoop介绍</a></h1>
	        <dl class="tags">

	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a></dd>
				
				<dt class="topics">主题</dt>
	            
					<dd><a href="/cn/grid_computing" name="grid_computing" id="838" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">网格计算</a>,</dd>
				
					<dd><a href="/cn/clustering" name="clustering" id="815" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">集群与缓存</a></dd>
								
	        </dl>	        
	        <p>Hadoop是Apache开源组织的一个分布式计算开源框架，在很多大型网站上都已经得到了应用，如亚马逊、Facebook和Yahoo等等。本文是Hadoop入门实践三部曲的第一部，主要讲述了What和Why的问题。<a href="http://www.iHere.com/cn/articles/hadoop-intro" target="_blank">直接点击阅读完整文章</a>。</p>

	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>岑文初</strong>
						
					发布于
					8月4日					
				</li>
	            
					<li class="comments">
						<a href="/cn/news/2008/08/hadoop-intro"><span>&nbsp;</span>
							
								1
								条评论
							
						</a>

					</li>
				
	        </ul>
		</div>	
	
		<div class="entry">
			
				
			
	        <h1><a href="/cn/news/2008/08/gwt_overlay_types">Google引入GWT Overlay类型</a></h1>
	        <dl class="tags">
	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a></dd>

				
				<dt class="topics">主题</dt>
	            
					<dd><a href="/cn/Programming" name="Programming" id="831" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">编程</a>,</dd>
				
					<dd><a href="/cn/javascript" name="javascript" id="839" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">JavaScript</a>,</dd>
				
					<dd><a href="/cn/platforms" name="platforms" id="3,697" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">平台</a>,</dd>
				
					<dd><a href="/cn/scripting" name="scripting" id="842" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">脚本</a></dd>

								
	        </dl>	        
	        <p>Javascript Overlay类型是GWT 1.5的一个新特性，它简化了GWT应用与本地Javascript数据结构交互的过程。</p>
	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>R.J. Lorimer</strong>
	
					<span>&nbsp;</span>译者
					<strong>张龙</strong>
						
					发布于
					8月4日					
				</li>

	            
					<li class="comments">
						<a href="/cn/news/2008/08/gwt_overlay_types"><span>&nbsp;</span>
							
								1
								条评论
							
						</a>
					</li>
				
	        </ul>
		</div>	
	
		<div class="entry">
			
				
			
	        <h1><a href="/cn/news/2008/08/good-bad-ugly-silverlight">臧否Silverlight点燃RIA大论争</a></h1>

	        <dl class="tags">
	            <dt class="community">社区</dt>
	            
					<dd><a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a></dd>
				
				<dt class="topics">主题</dt>
	            
					<dd><a href="/cn/ria" name="ria" id="777" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">RIA</a></dd>
								
	        </dl>	        
	        <p>RIA工具成为主流技术，开发者的选择也越来越多。Adobe平台传道士Serge Jespers在博客上对Flex和Silverlight进行了对比，并因此引发了激烈的争论。</p>

	        <ul class="info link-col">
				<li class="author">
					<span>&nbsp;</span>作者
					<strong>Moxie Zhang</strong>
	
					<span>&nbsp;</span>译者
					<strong>郭晓刚</strong>
						
					发布于
					8月4日					
				</li>
	            
					<li class="comments">

						<a href="/cn/news/2008/08/good-bad-ugly-silverlight"><span>&nbsp;</span>
							
								6
								条评论
							
						</a>
					</li>
				
	        </ul>
		</div>	
	
		
	<ul class="newslist link-col">	
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/use-case-or-user-story">用例还是用户故事？</a>,
			<em>

				8月3日,
				
					<a href="/cn/agile" name="agile" id="743" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile</a>
				
			</em>
			
				<span class="info"><span class="comments"><a style="text-decoration: none; font-weight: normal;" href="/cn/news/2008/08/use-case-or-user-story"><span>&nbsp;</span>
				
					2
					条评论
				
				</a></span></span>
				
		</li>
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/jruby113-rcov-rubinius-ffi-mvm_z">JRuby综述: 1.1.3、rcov4jr、Rubinius MVM及FFI</a>,
			<em>

				8月3日
				
					<a href="/cn/ruby" name="ruby" id="741" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby</a>,
				
					<a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>
				
			</em>
				
		</li>
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/qcon-sf-schedule">QCon旧金山11月19-21日完整日程安排</a>,
			<em>
				8月2日
				
					<a href="/cn/architecture" name="architecture" id="1,390" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture</a>,
				
					<a href="/cn/agile" name="agile" id="743" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile</a>,
				
					<a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>,
				
					<a href="/cn/ruby" name="ruby" id="741" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby</a>,
				
					<a href="/cn/dotnet" name="dotnet" id="740" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">.NET</a>,
				
					<a href="/cn/soa" name="soa" id="742" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">SOA</a>

				
			</em>
				
		</li>
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/eventmachine">EventMachine：高速可伸缩的事件驱动I/O框架</a>,
			<em>
				8月2日
				
					<a href="/cn/ruby" name="ruby" id="741" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby</a>
				
			</em>
				
		</li>

	
		
			
		
		<li>
			<a href="/cn/news/2008/08/yard-documentation-generator">YARD──Ruby代码元数据和文档生成器</a>,
			<em>
				8月2日
				
					<a href="/cn/ruby" name="ruby" id="741" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby</a>
				
			</em>
				
		</li>
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/FDT-31-beta-released_zh">FDT 3.1 Beta－－又一个Flash RIA开发工具</a>,
			<em>

				8月2日
				
					<a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>
				
			</em>
				
		</li>
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/javafx-preview">从概念到实现：JavaFX SDK 预览版发布</a>,
			<em>
				8月2日
				
					<a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>

				
			</em>
				
		</li>
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/37signals-small-beauty">文章：37 Signals的实用最小主义实践</a>,
			<em>
				8月2日,
				
					<a href="/cn/agile" name="agile" id="743" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile</a>
				
			</em>
			
				<span class="info"><span class="comments"><a style="text-decoration: none; font-weight: normal;" href="/cn/news/2008/08/37signals-small-beauty"><span>&nbsp;</span>

				
					1
					条评论
				
				</a></span></span>
				
		</li>
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/cohen">CloudCamp的Reuven Cohen谈虚拟化和云计算</a>,
			<em>
				8月1日
				
					<a href="/cn/architecture" name="architecture" id="1,390" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture</a>,
				
					<a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>

				
			</em>
				
		</li>
	
		
			
		
		<li>
			<a href="/cn/news/2008/08/corporate-structure-architecture">对软件架构和企业组织结构的思考</a>,
			<em>
				8月1日
				
					<a href="/cn/architecture" name="architecture" id="1,390" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture</a>
				
			</em>
				
		</li>

	
	</ul>
	
	
	<ul class="newsnav link-col">
	
	
	
	
	    <li>
	    	
			<a href="/cn/iHere.action?newsidx=10">更早的 &gt;</a>
		</li>
	
	</ul>
	
	
	<div class="box-bottom"></div>
	</div>

	</div> 
	<div class="bottom-corners"><div></div></div>
		<div class="vendor-content-box-outside">
			







<div class="vendor-content-box">
	
	<h3>相关<span class="vendor">厂商</span>内容</h3>
	
	
		
			
		
		<p class="entrypdf">
			<a href="/cn/vendorcontent/show.action?vcr=367" target="_blank">
				IBM SOA数据服务开发工具
			</a>

		</p>
	
		
			
		
		<p class="entrypdf">
			<a href="/cn/vendorcontent/show.action?vcr=366" target="_blank">
				Data Studio——SOA数据服务开发
			</a>
		</p>
	
		
			
		
		<p class="entrypdf">
			<a href="/cn/vendorcontent/show.action?vcr=303" >
				SOY Framework：Java富客户端快速开发框架
			</a>

		</p>
	
	
	
	
	
	
	
</div>

		</div>
	</div> 	


			
		</div>
		
	</div></div>
	
		
	





<!-- right side start -->

	<div id="rightbar">

	<div id="right-wrapper">
	    <!-- box start -->
	    <div class="box">
	        <h2>独家内容</h2>
	        <ul class="menu" id="tabsmenu">
	   			<li id="tab_ALL_EXCEPT_NEWS" class="m-ALL_EXCEPT_NEWS-on"><a href="#" onclick="ContentSummary.switchTab('ALL_EXCEPT_NEWS');return false;">全部</a></li>
	            <li id="tab_ARTICLE" class="m-ARTICLE-off"><a href="#" onclick="ContentSummary.switchTab('ARTICLE');return false;">文章</a></li>

	            <li id="tab_PRESENTATION" class="m-PRESENTATION-off"><a href="#" onclick="JSResource.presentationsTab();return false;">技术演讲</a></li>
	            <li id="tab_INTERVIEW" class="m-INTERVIEW-off"><a href="#" onclick="JSResource.interviewsTab();return false;">技术访谈</a></li>
	            <li id="tab_MINIBOOK" class="m-MINIBOOK-off"><a href="#" onclick="JSResource.minibooksTab();return false;">迷你书</a></li>
	        </ul>
		    <div class="top-corners"><div></div></div>
		    
		    <div class="box-content">
			    <div class="box-content-2">

			    <div id="rightbarcontentbox" class="box-content-3">
					
						
					





<form id="tabstateform" action="">
	<input id="startIndex" type="hidden" name="startIndex" value="0"/>
	<input id="selectedTab" type="hidden" name="selectedTab" value="ALL_EXCEPT_NEWS"/>
	<input id="rightBarLanguage" type="hidden" name="language" value="zh" />
</form>


	
		
	
	<div class="entry">
    	<h1 class="ex-articles"><a href="/cn/articles/ruby-open-classes-monkeypatching">Ruby的开放类──或者：怎样避免动态打补丁</a></h1>

    	
        	<p class="image"><a href="/cn/articles/ruby-open-classes-monkeypatching"><img src="/resource/articles/ruby-open-classes-monkeypatching/zh/smallimage/image_monkey_bandage.jpg" alt="" /></a></p>
        
        <p>Ruby的开放类（Open Classes）功能强大，但很容易被误用。这篇文章关注于怎样减少使用开放类的风险，介绍了一些其他可替代的类似方法，并分析了其他语言如何实现类似的功能。</p>
        <ul class="info link-col">
            <li>
			
				<a href="/cn/ruby" name="ruby" id="741" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby</a>,
			
			</li>
	        <li class="author"><span>&nbsp;</span>2008年8月5日,</li>
    	    
    	    	<li class="comments">

    	    		<a href="/cn/articles/ruby-open-classes-monkeypatching"><span>&nbsp;</span>
	    	    		    		    		
    		    	</a>
    		    </li>
    		 
        </ul>
    </div>
        
    <div class="clearer"></div>

	
		
	
	<div class="entry">
    	<h1 class="ex-articles"><a href="/cn/articles/rest-anti-patterns">REST反模式</a></h1>

    	
        	<p class="image"><a href="/cn/articles/rest-anti-patterns"><img src="/resource/articles/rest-anti-patterns/zh/smallimage/antipattern.gif" alt="" /></a></p>
        
        <p>在本文中，Stefan Tilkov讲解了一些经常出现在自称“符合REST式设计”的应用中的反模式（比如：全部采用GET或POST，忽视缓存及响应代码，误用cookies，忘记超媒体与MIME类型，以及破坏自描述性等），并给出了避免这些反模式的对策。</p>
        <ul class="info link-col">
            <li>
			
				<a href="/cn/soa" name="soa" id="742" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">SOA</a>,
			
			</li>
	        <li class="author"><span>&nbsp;</span>2008年8月4日,</li>
    	    
    	    	<li class="comments">

    	    		<a href="/cn/articles/rest-anti-patterns"><span>&nbsp;</span>
	    	    		    		    		
    		    	</a>
    		    </li>
    		 
        </ul>
    </div>
        
    <div class="clearer"></div>

	
		
	
	<div class="entry">
    	<h1 class="ex-articles"><a href="/cn/articles/hadoop-intro">分布式计算开源框架Hadoop介绍</a></h1>

    	
        	<p class="image"><a href="/cn/articles/hadoop-intro"><img src="/resource/articles/hadoop-intro/zh/smallimage/hadoop.jpg" alt="" /></a></p>
        
        <p>Hadoop是Apache开源组织的一个分布式计算开源框架，在很多大型网站上都已经得到了应用，如亚马逊、Facebook和Yahoo等等。本文是Hadoop入门实践三部曲的第一部，主要讲述了What和Why的问题。</p>
        <ul class="info link-col">
            <li>
			
				<a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>,
			
			</li>
	        <li class="author"><span>&nbsp;</span>2008年8月4日,</li>
    	    
    	    	<li class="comments">

    	    		<a href="/cn/articles/hadoop-intro"><span>&nbsp;</span>
	    	    		
    		    			1
    		    		    		    		
    		    	</a>
    		    </li>
    		 
        </ul>
    </div>
        
    <div class="clearer"></div>

	
		
	
	<div class="entry">
    	<h1 class="ex-articles"><a href="/cn/articles/37signals-small-beauty">37 Signals的实用最小主义实践</a></h1>

    	
        	<p class="image"><a href="/cn/articles/37signals-small-beauty"><img src="/resource/articles/37signals-small-beauty/zh/smallimage/dream_in_code.jpg" alt="" /></a></p>
        
        <p>本文结合37 Signals公司在开发Basecamp等产品时的实践，介绍了实用最小主义开发方法。实践证明，尤其是在开发Web应用时，这一方法非常有效。根据作者的观察，Google现在之所以那么成功，其所遵循的软件开发哲学和最小实用主义非常类似。</p>
        <ul class="info link-col">
            <li>
			
				<a href="/cn/agile" name="agile" id="743" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile</a>,
			
			</li>
	        <li class="author"><span>&nbsp;</span>2008年8月1日,</li>
    	    
    	    	<li class="comments">

    	    		<a href="/cn/articles/37signals-small-beauty"><span>&nbsp;</span>
	    	    		
    		    			1
    		    		    		    		
    		    	</a>
    		    </li>
    		 
        </ul>
    </div>
        
    <div class="clearer"></div>

	
		
	
	<div class="entry">
    	<h1 class="ex-interviews"><a href="/cn/interviews/linhao-osgi">与林昊一起探讨OSGi</a></h1>

    	
        	<p class="image"><a href="/cn/interviews/linhao-osgi"><img src="/resource/interviews/linhao-osgi/zh/smallimage/linhao.jpg" alt="" /></a></p>
        
        <p>在今年5月份的网侠大会上，iHere中文站有幸与国内OSGi的先锋林昊（BlueDavy）在一起探讨了OSGi的相关话题，包括它的优势、复杂度以及Java下的实现等等。</p>
        <ul class="info link-col">
            <li>
			
				<a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>,
			
			</li>
	        <li class="author"><span>&nbsp;</span>2008年7月31日,</li>
    	    
    	    	<li class="comments">

    	    		<a href="/cn/interviews/linhao-osgi"><span>&nbsp;</span>
	    	    		
    		    			2
    		    		    		    		
    		    	</a>
    		    </li>
    		 
        </ul>
    </div>
        
    <div class="clearer"></div>

	
		
	
	<div class="entry">
    	<h1 class="ex-articles"><a href="/cn/articles/pickering-fsharp-async">超越F#基础——异步工作流</a></h1>

    	
        	<p class="image"><a href="/cn/articles/pickering-fsharp-async"><img src="/resource/articles/pickering-fsharp-async/zh/smallimage/F.png" alt="" /></a></p>
        
        <p>Robert Pickering在F#的第三篇文章中，他继续着上次的话题，不过这次他要关注的是异步工作流（Asynchronous Workflows），以及在使用这个特性后获得的性能改善。虽然这篇文章是关于F#的，但是这样的知识对于所有的.NET语言都是适用的。</p>
        <ul class="info link-col">
            <li>
			
				<a href="/cn/dotnet" name="dotnet" id="740" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">.NET</a>,
			
			</li>
	        <li class="author"><span>&nbsp;</span>2008年7月30日,</li>
    	    
    	    	<li class="comments">

    	    		<a href="/cn/articles/pickering-fsharp-async"><span>&nbsp;</span>
	    	    		
    		    			1
    		    		    		    		
    		    	</a>
    		    </li>
    		 
        </ul>
    </div>
        
    <div class="clearer"></div>

	
		
	
	<div class="entry">
    	<h1 class="ex-minibooks"><a href="/cn/minibooks/open-source-tools-choice">开源技术选型手册</a></h1>

    	
        	<p class="image"><a href="/cn/minibooks/open-source-tools-choice"><img src="/resource/minibooks/open-source-tools-choice/zh/smallimage/open-source-tools-choice.jpg" alt="" /></a></p>
        
        <p>本迷你书是《开源技术选型手册》的精选版，包括Web框架篇、动态语言篇、Ajax开发篇、版本控制篇、项目管理篇（AOP）、面向方面编程篇和面向服务架构篇（SOA）等，作者均为 iHere中文站编辑。《开源技术选型手册》由博文视点出版公司出版，全书共包含20个章节，由各领域的专家撰写而成，为中高级技术人员的技术选型工作提供必要的参考。</p>
        <ul class="info link-col">
            <li>
			
				<a href="/cn/architecture" name="architecture" id="1,390" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Architecture</a>,
			
				<a href="/cn/agile" name="agile" id="743" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile</a>,
			
				<a href="/cn/java" name="java" id="739" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Java</a>,
			
				<a href="/cn/ruby" name="ruby" id="741" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Ruby</a>,
			
				<a href="/cn/dotnet" name="dotnet" id="740" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">.NET</a>,
			
				<a href="/cn/soa" name="soa" id="742" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">SOA</a>,
			
			</li>

	        <li class="author"><span>&nbsp;</span>2008年7月28日,</li>
    	    
        </ul>
    </div>
        
    <div class="clearer"></div>

	
		
	
	<div class="entry">
    	<h1 class="ex-presentations"><a href="/cn/presentations/yuanyingjie-cplusplus-agile">C++项目的敏捷实践</a></h1>
    	
        	<p class="image"><a href="/cn/presentations/yuanyingjie-cplusplus-agile"><img src="/resource/presentations/yuanyingjie-cplusplus-agile/zh/smallimage/yuanyingjie.jpg" alt="" /></a></p>

        
        <p>本视频主要对C++的敏捷式开发进行了探讨，其中包括社区文化、测试驱动、构建速度、复杂性、持续集成、遗留系统等内容。</p>
        <ul class="info link-col">
            <li>
			
				<a href="/cn/agile" name="agile" id="743" onclick="try {CategoryPopup.showPopup(this);} catch(e) {}; return false;">Agile</a>,
			
			</li>
	        <li class="author"><span>&nbsp;</span>2008年7月27日,</li>
    	    
    	    	<li class="comments">
    	    		<a href="/cn/presentations/yuanyingjie-cplusplus-agile"><span>&nbsp;</span>

	    	    		
    		    			5
    		    		    		    		
    		    	</a>
    		    </li>
    		 
        </ul>
    </div>
        
    <div class="clearer"></div>



<ul class="newsnav link-col">



    <li><a href="#" onclick="ContentSummary.setStartIndex('8');return false;">更早的 &gt;</a></li>



</ul>

	
				    <div class="box-bottom"></div>
				</div>
				</div>
				<div class="bottom-corners"><div></div></div>

			</div>
		</div>
		<!-- box end -->
		<script type="text/javascript">
			ContentSummary.setSelectedTab('zh');
		</script>
	</div>
	</div>

<!-- right side end -->


	<div class="clearer"></div>

	






	<div id="footer">
		<p>
			iHere.com 及其所有内容，版权所有&#169; 2006-2007 C4Media Inc.
			iHere.com 服务器由 <a href="http://www.contegix.com/">Contegix</a> 提供，我们最信赖的 ISP 合作伙伴。
			<a href="/cn/PrivacyPolicy.jsp">隐私政策</a>
		</p>

	</div>


</div>






<script type="text/javascript">
	var includeName = '取消过滤';
	var excludeName = '过滤';
	var includeHint = '您可以取消对此类内容的过滤。';
	var excludeHint = '您可以过滤此类内容。';
	var excludeCategoryMessage = '您可以选择在您的个人资料定制页重新添加此类，也可以马上重新添加。<BR />';
	var viewallCategoryMessage = '您可以查看此类的所有内容。';
	var busyMessage = '请稍候……';
	var contextPath = '' + '/';
	var viewallCategoryPath= 'zh';
	var includeExcludeLink= true;
</script>

</body>
</html>

